#pragma once

class Drawing;

class Shape {
   public:
    virtual void draw() = 0;
};

class Rectangle : public Shape {
   public:
    Rectangle(Drawing *dp, int x1, int y1, int x2, int y2);
    void draw() override;

   private:
    Drawing *_dp;
    int _x1, _y1, _x2, _y2;
};

class Circle : public Shape {
   public:
    Circle(Drawing *dp, int x, int y, int r);
    void draw() override;

   private:
    Drawing *_dp;
    int _x, _y, _r;
};